<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>const</title>
</head>
<body>
<script>
  /**
   * const 命令声明一个只读的常量。一旦声明，常量的值就不能改变
   * const 命令声明的常量不得改变值。即一旦声明，就必须立即初始化。
   * const 命令声明的常量，只在声明所在的块级作用域内有效
   * const 命令声明的常量不提升，只能在声明的位置后使用
   * const 命令声明的常量，与 let 一样不可重复声明
   * const 命令声明的复合类型的数据（主要是对象和数组），变量指向的内存地址
   */
  const i = 10;
  //一旦声明，常量的值就不能改变
  // const i = 15;
  console.log(i);
  //不允许先声明再复制
  // const c;
  const c=5;
  console.log('c的值'+c);

  function demo(){
    const a = 10;
    console.log('a在demo里面的值' + a);
  }
  demo();
  //只在声明所在的块级作用域内有效 报错
  // console.log('a在demo外面的值' + a);


  //const 命令声明的常量，与 let 一样不可重复声明 报错
  // const v = 1;
  // (function() {
  //     console.log(v);
  //     const v = 12
  // })();

  //const 命令声明的常量，与 let 一样不可重复声明 报错
  // const c=20;
  // console.log('c重复声明后的值' + c);



  //const 声明一个复合类型 如：数组里面的值是可以改变的
  const ar = [1,2];
  ar[0]= 'zhangsan';
  ar[1]= 5;
  console.log('ar的值是否改变了,ar的值'+ar);
</script>
</body>
</html>